package com.java.simple.study.jvm.memstruct.heap;

import java.util.Objects;

/**
 * @author zhoujunlin
 * @date 2022年06月19日 21:09
 * @desc
 */
public class EscapeAnalysis {

    public EscapeAnalysis obj;

    /**
     * 方法返回EscapeAnalysis对象 发生逃逸
     *
     * @return
     */
    public EscapeAnalysis getInstance() {
        return Objects.isNull(obj) ? new EscapeAnalysis() : obj;
    }

    /**
     * 为成员变量赋值 发生逃逸
     */
    public void setObj() {
        this.obj = new EscapeAnalysis();
    }

    /**
     * 对象的作用域仅当前方法中有效 没有发生逃逸
     */
    public void useEscapeAnalysis() {
        EscapeAnalysis escapeAnalysis = new EscapeAnalysis();
    }

    /**
     * 引用成员变量的值  发生逃逸
     */
    public void useEscapeAnalysis1() {
        EscapeAnalysis instance = getInstance();

    }

}
